#ifndef INIT_REAL_CU
#define INIT_REAL_CU

#include "../fitness/fitnessReal.cu"

__global__ void inicializarPoblacionRealManual(float* poblacion, float* fitnessActualDevice, struct Random randomGPU, int cantCromosomasPoblacion, float* fitnessOrdenadoDevice, float* numerosAleatoriosInicializacion){
	//Obtengo posicion a escribir.
	int posicionCromosoma = threadIdx.y * cantGenesEnCromosomaDevice * 2 + blockIdx.y * totalGenesEnPoblacionDevice;
	int posicionFitness = threadIdx.y * 2 + blockIdx.y * cantCromosomasPoblacionDevice;
	for(int i = 0; i<cantGenesEnCromosomaDevice * 2; i++){
		//Genero valor aleatorio.
		float r = ((float)numerosAleatoriosInicializacion[posicionCromosoma+i]) / 34989895.33333333338419;
		poblacion[posicionCromosoma+i] = r;
	}
	fitnessActualDevice[posicionFitness] = calcularFitnessRealGPU(poblacion, posicionCromosoma);
	fitnessActualDevice[posicionFitness + 1] = calcularFitnessRealGPU(poblacion, posicionCromosoma + cantGenesEnCromosomaDevice);
	fitnessOrdenadoDevice[posicionFitness] = fitnessActualDevice[posicionFitness];
	fitnessOrdenadoDevice[posicionFitness + 1] = fitnessActualDevice[posicionFitness + 1];
}

#endif
